<template>
  <div class="tables-edit-outer">
    <div v-if="!isEditting" class="tables-edit-con">
      <span class="value-con">{{ value }}</span>
      <Button v-if="editable" @click="startEdit" class="tables-edit-btn" style="padding: 2px 4px;" type="text">
        <Icon type="md-create"></Icon>
      </Button>
    </div>
    <div v-else class="tables-editting-con">
      <Input :value="value" @input="handleInput" class="tables-edit-input"/>
      <Button @click="saveEdit" style="padding: 6px 4px;" type="text">
        <Icon type="md-checkmark"></Icon>
      </Button>
      <Button @click="canceltEdit" style="padding: 6px 4px;" type="text">
        <Icon type="md-close"></Icon>
      </Button>
    </div>
  </div>
</template>

<script>
  export default {
    name: 'TablesEdit',
    props: {
      value: [String, Number],
      edittingCellId: String,
      params: Object,
      editable: Boolean
    },
    computed: {
      isEditting () {
        return this.edittingCellId === `editting-${this.params.index}-${this.params.column.key}`
      }
    },
    methods: {
      handleInput (val) {
        this.$emit('input', val)
      },
      startEdit () {
        this.$emit('on-start-edit', this.params)
      },
      saveEdit () {
        this.$emit('on-save-edit', this.params)
      },
      canceltEdit () {
        this.$emit('on-cancel-edit', this.params)
      }
    }
  }
</script>

<style lang="less">
  .tables-edit-outer {
    height: 100%;
    .tables-edit-con {
      position: relative;
      height: 100%;
      .value-con {
        vertical-align: middle;
      }
      .tables-edit-btn {
        position: absolute;
        right: 10px;
        top: 0;
        display: none;
      }
      &:hover {
        .tables-edit-btn {
          display: inline-block;
        }
      }
    }
    .tables-editting-con {
      .tables-edit-input {
        width: ~"calc(100% - 60px)";
      }
    }
  }
</style>
